A Gray code is a set of 2n distinct code words, essentially binary numbers, each having n bits. Each bit position of a code word is called a co-ordinate position. Since code words may be digital numbers, each coordinate position may also be called a bit position. Gray codes have the property that consecutive code words differ in only one co-ordinate position. A Gray code is characterized by a transition or code sequence, an ordered list of bit positions manifesting the co-ordinate position whose value changes from one code word to an adjacent code word. A code sequence may be embodied in a code table having rows wherein a row is occupied by a code word having a position in the table corresponding to the position of the code word occupying it in the code sequence.
Gray codes are used to encode the positions of moveable objects such as magnetic disks, optical disks, shafts, periscopes, and so on. (It should be noted that the position of an object is different and distinct from the co-ordinate position of a bit in a code word.) Such a moveable object has a Gray code placed upon it in a discernible form, usually as a sequence of marks that extends in the direction in which the object moves. Each position of the object in the direction of motion has a set of marks that form a code word. The successive positions are marked with the code sequence. As the object moves, successive positions are identified by reading and decoding successive sets of marks. The set of marks for any position differs from the set of marks in an adjacent position only by the value of marks in one co-ordinate position. Gray coding is favored for positional encoding because of the ease, speed and accuracy with which the code words of adjacent positions can be decoded.
A sensor in a system that signals the position of a moveable object with a Gray code includes an array of sensor elements positioned over a surface of the object at which the marks can be read. As the object moves, the sensor discerns the marks at each position and converts the discerned marks to digital electronic form. The form of the marks and the type of sensor used to sense them are selected to be appropriate to the construction of the moveable object. The marks may be magnetic domains, pits, bumps, conductive contacts, colored spaces, and so on. The sensors may be magnetic read heads, optical read heads, magneto-optical read heads, conductive contacts, and so on.
When a sensor is aligned precisely with a coded position, it will faithfully sense the code word at that position. However, at high speeds and high resolutions, it is increasingly possible for a sensor to be called on to operate when it straddles adjacent code words. In such a case, the uncertainty of the result is limited to the co-ordinate position in which the adjacent code words differ. However, the Gray code property that adjacent code words will differ in only one bit position is sufficient to guarantee accurate decoding, particularly as supplemental means may be employed to resolve the uncertainty. Nevertheless, as the speeds of Gray-coded objects increase, along with the resolutions required for high precision position detection, problems of sensing accurately become more acute. If a sensor is skewed with respect to the code words, there is the possibility that it may straddle three or more code words. The Gray code property that adjacent code words will differ in only one bit position is insufficient to guarantee reliable decoding of a sensor signal containing contributions from more than two adjacent positions. A significant enhancement of Gray code accuracy would be realized with the addition of a property that enabled a Gray code to tolerate the skew of a sensor over three or more adjacent code words.